package com.egoo.ticket.server.config.redis;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * @Author: victor_tang
 * @Date: 2020/1/3 11:59
 * @Description: redis订阅消息类
 */
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class RedisReceiver {

//	@Autowired
//	private TriggerExecuteService triggerExecuteService;
//
//	@Autowired
//	private RedisUtil redisUtil;

//	/**
//	 * / 触发器境
//	 */
//	@Value("${server.redis_env}")
//	private String redisEnv;

	public void receiveMessage(String message) {
//		log.info("redis订阅消息Received: " + message);
//		if (StringUtils.isEmpty(message)) {
//			log.error("收到的订阅消息内容为空！");
//			return;
//		}
//
//		// 添加订阅锁，解决集群部署，监听重复处理问题，避免redis内存溢出
//		String lockKey = message + "_" + redisEnv;
//		String lockValue = redisUtil.getAndSet(lockKey, "Y");
//		log.info("订阅锁" + lockKey + "的值为：" + lockValue);
//		if (ConstantCode.RedisKey.KEY.equals(lockValue)) {
//			return;
//		}
//		try {
//			// 解析内容
//			String[] topicList = message.split("_");
//			if (topicList == null || topicList.length < ConstantCode.RedisKey.PARAM_LENGTH) {
//				log.error("redis发布的topic内容格式不规范");
//				return;
//			}
//			// 主题类型
//			String topicType = topicList[1];
//			// 发布主题内容
//			String topicContent = topicList[2];
//
//			if (RedisKeyConstant.TopicType.TRIGGER.equals(topicType)) {
//				// 设置触发器时间类条件过期时间
//				triggerExecuteService.setWorkOrderTimeConditionTrigger(topicContent);
//				// 工单触发器执行
//				triggerExecuteService.triggerExecuteByWorkOrderId(topicContent);
//			}
//		} catch (Exception e) {
//			log.error("触发器订阅消息：" + message + "执行异常：" + e);
//		} finally {
//			// 业务处理完，删除订阅锁，避免redis内存溢出和业务混乱
//			redisUtil.del(lockKey);
//		}

	}
}
